Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-night-mode-disabled vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-1 vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-1 vector-sticky-header-enabled" lang="en" dir="ltr"><head>
<meta charset="UTF-8">
<title>Line integral convolution</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="canonical" href="https://en.wikipedia.org/wiki/Line_integral_convolution"> <link href="./mw/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/skins.vector.styles.css" rel="stylesheet" type="text/css">
<link href="./mw/user.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link rel="stylesheet" type="text/css" href="./mw/site.styles.css">
<link rel="stylesheet" type="text/css" href="./mw/noscript.css">
<link rel="stylesheet" type="text/css" href="./footer.css">
<link rel="stylesheet" type="text/css" href="./vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Line_integral_convolution rootpage-Line_integral_convolution skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading">
<span id="openzim-page-title" class="mw-page-title-main"><span class="mw-page-title-main">Line integral convolution</span></span>
</h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="en" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="en" dir="ltr">

<p>In <a href="Scientific_visualization" title="Scientific visualization">scientific visualization</a>, <b>line integral convolution</b> (<b>LIC</b>) is a method to visualize a <a href="Vector_field" title="Vector field">vector field</a> (such as <a href="Fluid_motion" class="mw-redirect" title="Fluid motion">fluid motion</a>) at high spatial resolutions.<sup id="cite_ref-Stalling_1995_1-0" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The LIC technique was first proposed by Brian Cabral and Leith Casey Leedom in 1993.<sup id="cite_ref-Cabral_1993_2-0" class="reference"><a href="#cite_note-Cabral_1993-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup>
</p><p>In LIC, discrete numerical <a href="Line_integral" title="Line integral">line integration</a> is performed along the <a href="Field_line" title="Field line">field lines</a> (curves) of the vector field on a <a href="Regular_grid" title="Regular grid">uniform grid</a>. The integral operation is a <a href="Convolution" title="Convolution">convolution</a> of a filter <a href="Kernel_(image_processing)" title="Kernel (image processing)">kernel</a> and an input texture, often <a href="White_noise" title="White noise">white noise</a>.<sup id="cite_ref-Stalling_1995_1-1" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> In <a href="Signal_processing" title="Signal processing">signal processing</a>, this process is known as a <a href="Convolution#Discrete_convolution" title="Convolution">discrete convolution</a>.<sup id="cite_ref-:0_3-0" class="reference"><a href="#cite_note-:0-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup>
</p>
<meta property="mw:PageProp/toc">
<div class="mw-heading mw-heading2"><h2 id="Overview">Overview</h2></div>
<p>Traditional visualizations of vector fields use small arrows or lines to represent vector direction and magnitude. This method has a low <a href="Spatial_resolution" title="Spatial resolution">spatial resolution</a>, which limits the density of presentable data and risks obscuring characteristic features in the data.<sup id="cite_ref-Stalling_1995_1-2" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-:0_3-1" class="reference"><a href="#cite_note-:0-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup> More sophisticated methods, such as <a href="Streamlines%2C_streaklines%2C_and_pathlines" title="Streamlines, streaklines, and pathlines">streamlines</a> and particle tracing techniques, can be more revealing but are highly dependent on proper seed points.<sup id="cite_ref-Stalling_1995_1-3" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Texture-based methods, like LIC, avoid these problems since they depict the entire vector field at point-like (pixel) resolution.<sup id="cite_ref-Stalling_1995_1-4" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p><p>Compared to other integration-based techniques that compute field lines of the input vector field, LIC has the advantage that all structural features of the vector field are displayed, without the need to adapt the start and end points of field lines to the specific vector field. In other words, it shows the topology of the vector field.
</p><p>In user testing, LIC was found to be particularly good for identifying critical points.<sup id="cite_ref-Laidlaw_2001_4-0" class="reference"><a href="#cite_note-Laidlaw_2001-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Algorithm">Algorithm</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Informal_description">Informal description</h3></div>
<p>LIC causes output values to be strongly correlated along the field lines, but uncorrelated in orthogonal directions.<sup id="cite_ref-Stalling_1995_1-5" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> As a result, the field lines contrast each other and stand out visually from the background.
</p><p>Intuitively, the process can be understood with the following example: the flow of a vector field can be visualized by overlaying a fixed, random pattern of dark and light paint. As the flow passes by the paint, the fluid picks up some of the paint's color, averaging it with the color it has already acquired. The result is a randomly striped, smeared texture where points along the same streamline tend to have a similar color. Other physical examples include:
</p>
<ul><li>whorl patterns of paint, oil, or foam on a river</li>
<li>visualisation of <a href="Magnetic_field" title="Magnetic field">magnetic field</a> lines using <a href="https://commons.wikimedia.org/wiki/Category:Magnetised_iron_filings" class="extiw external" title="commons:Category:Magnetised iron filings">randomly distributed iron filings</a></li>
<li>fine sand being blown by strong wind<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading3"><h3 id="Formal_mathematical_description">Formal mathematical description</h3></div>
<p>Although the input vector field and the result image are discretized, it pays to look at it from a continuous viewpoint.<sup id="cite_ref-Stalling_1995_1-6" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> Let <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {v} }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">v</mi>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \mathbf {v} }</annotation>
</semantics>
</math></span><img src="./35c1866e359fbfd2e0f606c725ba5cc37a5195d6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.411ex; height:1.676ex;" alt="{\displaystyle \mathbf {v} }" loading="lazy"></span> be the vector field given in some domain <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi mathvariant="normal">Ω<!-- Ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \Omega }</annotation>
</semantics>
</math></span><img src="./24b0d5ca6f381068d756f6337c08e0af9d1eeb6f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \Omega }" loading="lazy"></span>. Although the input vector field is typically discretized, we regard the field <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {v} }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">v</mi>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \mathbf {v} }</annotation>
</semantics>
</math></span><img src="./35c1866e359fbfd2e0f606c725ba5cc37a5195d6.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.411ex; height:1.676ex;" alt="{\displaystyle \mathbf {v} }" loading="lazy"></span> as defined in every point of <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi mathvariant="normal">Ω<!-- Ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \Omega }</annotation>
</semantics>
</math></span><img src="./24b0d5ca6f381068d756f6337c08e0af9d1eeb6f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \Omega }" loading="lazy"></span>, i.e. we assume an <a href="Interpolation" title="Interpolation">interpolation</a>. Streamlines, or more generally field lines, are tangent to the vector field in each point. They end either at the boundary of <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi mathvariant="normal">Ω<!-- Ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \Omega }</annotation>
</semantics>
</math></span><img src="./24b0d5ca6f381068d756f6337c08e0af9d1eeb6f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \Omega }" loading="lazy"></span> or at critical points where <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {v} =\mathbf {0} }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">v</mi>
</mrow>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mn mathvariant="bold">0</mn>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \mathbf {v} =\mathbf {0} }</annotation>
</semantics>
</math></span><img src="./d31d67261ea15071d6152c53c93b21388cf22e5a.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.846ex; height:2.176ex;" alt="{\displaystyle \mathbf {v} =\mathbf {0} }" loading="lazy"></span>. For the sake of simplicity, critical points and boundaries are ignored in the following.
</p><p>A field line <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\boldsymbol {\sigma }}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold-italic">σ<!-- σ --></mi>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\boldsymbol {\sigma }}}</annotation>
</semantics>
</math></span><img src="./e45fe1b9d8dcbc3103fc7805d69798bfe5ca5b16.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.594ex; height:1.676ex;" alt="{\displaystyle {\boldsymbol {\sigma }}}" loading="lazy"></span>, parametrized by arc length <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>s</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle s}</annotation>
</semantics>
</math></span><img src="./01d131dfd7673938b947072a13a9744fe997e632.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.09ex; height:1.676ex;" alt="{\displaystyle s}" loading="lazy"></span>, is defined as
</p><p><span class="mwe-math-element mwe-math-element-block"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\frac {d{\boldsymbol {\sigma }}(s)}{ds}}={\frac {\mathbf {v} ({\boldsymbol {\sigma }}(s))}{|\mathbf {v} ({\boldsymbol {\sigma }}(s))|}}.}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mrow>
<mi>d</mi>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold-italic">σ<!-- σ --></mi>
</mrow>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mi>d</mi>
<mi>s</mi>
</mrow>
</mfrac>
</mrow>
<mo>=</mo>
<mrow class="MJX-TeXAtom-ORD">
<mfrac>
<mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">v</mi>
</mrow>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold-italic">σ<!-- σ --></mi>
</mrow>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
</mrow>
<mrow>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">|</mo>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">v</mi>
</mrow>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold-italic">σ<!-- σ --></mi>
</mrow>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
<mrow class="MJX-TeXAtom-ORD">
<mo stretchy="false">|</mo>
</mrow>
</mrow>
</mfrac>
</mrow>
<mo>.</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\frac {d{\boldsymbol {\sigma }}(s)}{ds}}={\frac {\mathbf {v} ({\boldsymbol {\sigma }}(s))}{|\mathbf {v} ({\boldsymbol {\sigma }}(s))|}}.}</annotation>
</semantics>
</math></span></span>
</p><p>Let <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle {\boldsymbol {\sigma }}_{\mathbf {r} }(s)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msub>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold-italic">σ<!-- σ --></mi>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">r</mi>
</mrow>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle {\boldsymbol {\sigma }}_{\mathbf {r} }(s)}</annotation>
</semantics>
</math></span><img src="./6f9036c59a0f288319deb37b3a323e260f6c73ee.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:5.506ex; height:2.843ex;" alt="{\displaystyle {\boldsymbol {\sigma }}_{\mathbf {r} }(s)}" loading="lazy"></span> be the field line that passes through the point <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {r} }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">r</mi>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \mathbf {r} }</annotation>
</semantics>
</math></span><img src="./eca0f46511c4c986c48b254073732c0bd98ae0c1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.102ex; height:1.676ex;" alt="{\displaystyle \mathbf {r} }" loading="lazy"></span> for <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle s=0}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>s</mi>
<mo>=</mo>
<mn>0</mn>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle s=0}</annotation>
</semantics>
</math></span><img src="./7903b8069a44c70f6f96511675bdd9a4ff200ed7.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:5.351ex; height:2.176ex;" alt="{\displaystyle s=0}" loading="lazy"></span>. Then the image gray value at <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \mathbf {r} }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">r</mi>
</mrow>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \mathbf {r} }</annotation>
</semantics>
</math></span><img src="./eca0f46511c4c986c48b254073732c0bd98ae0c1.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.102ex; height:1.676ex;" alt="{\displaystyle \mathbf {r} }" loading="lazy"></span> is set to
</p><p><span class="mwe-math-element mwe-math-element-block"><span class="mwe-math-mathml-display mwe-math-mathml-a11y" style="display: none;"><math display="block" xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle D(\mathbf {r} )=\int _{-L/2}^{L/2}k(s)N({\boldsymbol {\sigma }}_{\mathbf {r} }(s))ds}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>D</mi>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">r</mi>
</mrow>
<mo stretchy="false">)</mo>
<mo>=</mo>
<msubsup>
<mo>∫<!-- ∫ --></mo>
<mrow class="MJX-TeXAtom-ORD">
<mo>−<!-- − --></mo>
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>2</mn>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mi>L</mi>
<mrow class="MJX-TeXAtom-ORD">
<mo>/</mo>
</mrow>
<mn>2</mn>
</mrow>
</msubsup>
<mi>k</mi>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
<mi>N</mi>
<mo stretchy="false">(</mo>
<msub>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold-italic">σ<!-- σ --></mi>
</mrow>
<mrow class="MJX-TeXAtom-ORD">
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">r</mi>
</mrow>
</mrow>
</msub>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
<mo stretchy="false">)</mo>
<mi>d</mi>
<mi>s</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle D(\mathbf {r} )=\int _{-L/2}^{L/2}k(s)N({\boldsymbol {\sigma }}_{\mathbf {r} }(s))ds}</annotation>
</semantics>
</math></span></span>
</p><p>where <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k(s)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>k</mi>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle k(s)}</annotation>
</semantics>
</math></span><img src="./ac3a0f3d91f1d43e2c27409fd7eb41b887590563.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.111ex; height:2.843ex;" alt="{\displaystyle k(s)}" loading="lazy"></span> is the convolution <a href="Kernel_(image_processing)" title="Kernel (image processing)">kernel</a>, <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle N(\mathbf {r} )}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>N</mi>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">r</mi>
</mrow>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle N(\mathbf {r} )}</annotation>
</semantics>
</math></span><img src="./64f23430688609bf1cbb00423b25543c7c8ede84.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.975ex; height:2.843ex;" alt="{\displaystyle N(\mathbf {r} )}" loading="lazy"></span> is the noise image, and <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle L}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>L</mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle L}</annotation>
</semantics>
</math></span><img src="./103168b86f781fe6e9a4a87b8ea1cebe0ad4ede8.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.583ex; height:2.176ex;" alt="{\displaystyle L}" loading="lazy"></span> is the length of field <a href="Line_segment" title="Line segment">line segment</a> that is followed.
</p><p><span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle D(\mathbf {r} )}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>D</mi>
<mo stretchy="false">(</mo>
<mrow class="MJX-TeXAtom-ORD">
<mi mathvariant="bold">r</mi>
</mrow>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle D(\mathbf {r} )}</annotation>
</semantics>
</math></span><img src="./907edb8a67e55bb812185b922494ca3f78ddc085.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.836ex; height:2.843ex;" alt="{\displaystyle D(\mathbf {r} )}" loading="lazy"></span> has to be computed for each pixel in the LIC image. If carried out naively, this is quite expensive. First, the field lines have to be computed using a <a href="Numerical_methods_for_ordinary_differential_equations" title="Numerical methods for ordinary differential equations">numerical method for solving ordinary differential equations</a>, like a <a href="Runge%E2%80%93Kutta_methods" title="Runge–Kutta methods">Runge–Kutta method</a>, and then for each pixel the convolution along a field line segment has to be calculated.
</p><p>The final image will normally be colored in some way. Typically, some <a href="Scalar_field" title="Scalar field">scalar field</a> in <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi mathvariant="normal">Ω<!-- Ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \Omega }</annotation>
</semantics>
</math></span><img src="./24b0d5ca6f381068d756f6337c08e0af9d1eeb6f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \Omega }" loading="lazy"></span> (like the vector length) is used to determine the hue, while the grayscale LIC output determines the <a href="Lightness" title="Lightness">brightness</a>.
</p><p>Different choices of convolution kernels and random noise produce different textures; for example, <a href="Pink_noise" title="Pink noise">pink noise</a> produces a cloudy pattern where areas of higher flow stand out as smearing, suitable for weather visualization. Further refinements in the convolution can improve the quality of the image.<sup id="cite_ref-Weiskopf_2009_6-0" class="reference"><a href="#cite_note-Weiskopf_2009-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Programming_description">Programming description</h3></div>
<p>Algorithmically, LIC takes a vector field and noise texture as input, and outputs a texture. The process starts by generating in the domain of the vector field a random <a href="Grayscale" title="Grayscale">gray level image</a> at the desired output resolution. Then, for every pixel in this image, the forward and backward streamline of a fixed <a href="Arc_length" title="Arc length">arc length</a> is calculated. The value assigned to the current pixel is computed by a <a href="Convolution" title="Convolution">convolution</a> of a suitable convolution kernel with the gray levels of all the noise pixels lying on a segment of this streamline. This creates a gray level LIC image.
</p>
<div class="mw-heading mw-heading2"><h2 id="Versions">Versions</h2></div>
<div class="mw-heading mw-heading3"><h3 id="Basic">Basic</h3></div>

<p>Basic LIC images are grayscale images, without color and animation. While such LIC images convey the direction of the field vectors, they do not indicate orientation; for stationary fields, this can be remedied by animation. Basic LIC images do not show the length of the vectors (or the strength of the field).
</p>
<div class="mw-heading mw-heading3"><h3 id="Color">Color</h3></div>

<p>The length of the vectors (or the strength of the field) is usually coded in color; alternatively, animation can be used.<sup id="cite_ref-Cabral_1993_2-1" class="reference"><a href="#cite_note-Cabral_1993-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Stalling_1995_1-7" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Animation">Animation</h3></div>

<p>LIC images can be animated by using a kernel that changes over time. Samples at a constant time from the streamline would still be used, but instead of averaging all pixels in a streamline with a static kernel, a ripple-like kernel constructed from a <a href="Periodic_function" title="Periodic function">periodic function</a> multiplied by a <a href="Hann_function" title="Hann function">Hann function</a> acting as a window (in order to prevent artifacts) is used. The periodic function is then shifted along the period to create an animation.
</p>
<div class="mw-heading mw-heading3"><h3 id="Fast_LIC_(FLIC)">Fast LIC (FLIC)</h3></div>
<p>The computation can be significantly accelerated by re-using parts of already computed field lines, specializing to a box function as convolution kernel <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle k(s)}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi>k</mi>
<mo stretchy="false">(</mo>
<mi>s</mi>
<mo stretchy="false">)</mo>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle k(s)}</annotation>
</semantics>
</math></span><img src="./ac3a0f3d91f1d43e2c27409fd7eb41b887590563.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.838ex; width:4.111ex; height:2.843ex;" alt="{\displaystyle k(s)}" loading="lazy"></span> and avoiding redundant computations during convolution.<sup id="cite_ref-Stalling_1995_1-8" class="reference"><a href="#cite_note-Stalling_1995-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup> The resulting fast LIC method can be generalized to convolution kernels that are arbitrary polynomials.<sup id="cite_ref-Hege_1998_7-0" class="reference"><a href="#cite_note-Hege_1998-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Oriented_Line_Integral_Convolution_(OLIC)">Oriented Line Integral Convolution (OLIC)</h3></div>
<p>Because LIC does not encode flow orientation, it cannot distinguish between streamlines of equal direction but opposite orientation.<sup id="cite_ref-:1_8-0" class="reference"><a href="#cite_note-:1-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Oriented Line Integral Convolution (OLIC) solves this issue by using a ramp-like asymmetric kernel and a low-density noise texture.<sup id="cite_ref-:1_8-1" class="reference"><a href="#cite_note-:1-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> The kernel asymmetrically modulates the intensity along the streamline, producing a trace that encodes orientation; the low-density of the noise texture prevents smeared traces from overlapping, aiding readability.
</p><p>Fast Rendering of Oriented Line Integral Convolution (FROLIC) is a variation that approximates OLIC by rendering each trace in discrete steps instead of as a continuous smear.<sup id="cite_ref-:1_8-2" class="reference"><a href="#cite_note-:1-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Unsteady_Flow_LIC_(UFLIC)">Unsteady Flow LIC (UFLIC)</h3></div>
<p>For time-dependent vector fields (unsteady flow), a variant called Unsteady Flow LIC has been designed that maintains the coherence of the flow animation.<sup id="cite_ref-Shen_1998_10-0" class="reference"><a href="#cite_note-Shen_1998-10"><span class="cite-bracket">[</span>10<span class="cite-bracket">]</span></a></sup> An interactive GPU-based implementation of UFLIC has been presented.<sup id="cite_ref-Ding_2015_11-0" class="reference"><a href="#cite_note-Ding_2015-11"><span class="cite-bracket">[</span>11<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Parallel">Parallel</h3></div>
<p>Since the computation of an LIC image is expensive but inherently parallel, the process has been <a href="Parallel_computing" title="Parallel computing">parallelized</a><sup id="cite_ref-Zoeckler_1996_12-0" class="reference"><a href="#cite_note-Zoeckler_1996-12"><span class="cite-bracket">[</span>12<span class="cite-bracket">]</span></a></sup> and, with availability of GPU-based implementations, interactive on PCs.
</p>
<div class="mw-heading mw-heading3"><h3 id="Multidimensional">Multidimensional</h3></div>
<p>Note that the domain <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi mathvariant="normal">Ω<!-- Ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \Omega }</annotation>
</semantics>
</math></span><img src="./24b0d5ca6f381068d756f6337c08e0af9d1eeb6f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \Omega }" loading="lazy"></span> does not have to be a 2D domain: the method is applicable to higher dimensional domains using multidimensional noise fields. However, the visualization of the higher-dimensional LIC texture is problematic; one way is to use interactive exploration with 2D slices that are manually positioned and rotated. The domain <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle \Omega }">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<mi mathvariant="normal">Ω<!-- Ω --></mi>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle \Omega }</annotation>
</semantics>
</math></span><img src="./24b0d5ca6f381068d756f6337c08e0af9d1eeb6f.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:1.678ex; height:2.176ex;" alt="{\displaystyle \Omega }" loading="lazy"></span> does not have to be flat either; the LIC texture can be computed also for arbitrarily shaped 2D surfaces in 3D space.<sup id="cite_ref-Battke_1997_13-0" class="reference"><a href="#cite_note-Battke_1997-13"><span class="cite-bracket">[</span>13<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading2"><h2 id="Applications">Applications</h2></div>
<p>This technique has been applied to a wide range of problems since it first was published in 1993, both scientific and creative, including:
</p><p>Representing vector fields:
</p>
<ul><li>visualization of steady (time-independent) flows (streamlines)<sup id="cite_ref-14" class="reference"><a href="#cite_note-14"><span class="cite-bracket">[</span>14<span class="cite-bracket">]</span></a></sup></li>
<li>visual exploration of 2D autonomous dynamical systems<sup id="cite_ref-15" class="reference"><a href="#cite_note-15"><span class="cite-bracket">[</span>15<span class="cite-bracket">]</span></a></sup></li>
<li>wind mapping<sup id="cite_ref-16" class="reference"><a href="#cite_note-16"><span class="cite-bracket">[</span>16<span class="cite-bracket">]</span></a></sup></li>
<li>water flow mapping</li></ul>
<p>Artistic effects for image generation and stylization:
</p>
<ul><li>pencil drawing<sup id="cite_ref-17" class="reference"><a href="#cite_note-17"><span class="cite-bracket">[</span>17<span class="cite-bracket">]</span></a></sup> (automatic pencil drawing generation technique using LIC pencil filter<sup id="cite_ref-18" class="reference"><a href="#cite_note-18"><span class="cite-bracket">[</span>18<span class="cite-bracket">]</span></a></sup>)</li>
<li>automatic generation of hair textures<sup id="cite_ref-19" class="reference"><a href="#cite_note-19"><span class="cite-bracket">[</span>19<span class="cite-bracket">]</span></a></sup></li>
<li>creating marbling texture<sup id="cite_ref-20" class="reference"><a href="#cite_note-20"><span class="cite-bracket">[</span>20<span class="cite-bracket">]</span></a></sup></li></ul>
<p>Terrain generalization:
</p>
<ul><li>creating generalized <a href="Terrain_cartography#Shaded_relief" title="Terrain cartography">shaded relief</a><sup id="cite_ref-21" class="reference"><a href="#cite_note-21"><span class="cite-bracket">[</span>21<span class="cite-bracket">]</span></a></sup></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Implementations">Implementations</h2></div>
<ul><li><a rel="nofollow" class="external text" href="https://github.com/RaymondMcGuire/GPU-Based-Image-Processing-Tools">GPU Based Image Processing Tools by Raymond McGuire</a></li>
<li><a rel="nofollow" class="external text" href="https://www.paraview.org/Wiki/ParaView/Line%20Integral%20Convolution">ParaView&nbsp;: Line Integral Convolution</a></li>
<li><a rel="nofollow" class="external text" href="https://github.com/andresbejarano/2DFlowVisualization">A 2D flow visualization tool based on LIC and RK4. Developed using C++ and VTK. by Andres Bejarano</a></li>
<li><a rel="nofollow" class="external text" href="https://reference.wolfram.com/language/ref/LineIntegralConvolutionPlot.html">Wolfram Research (2008), LineIntegralConvolutionPlot, Wolfram Language function, https://reference.wolfram.com/language/ref/LineIntegralConvolutionPlot.html (updated 2014).</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="See_also">See also</h2></div>
<ul><li><a href="Weighted_arithmetic_mean" title="Weighted arithmetic mean">Weighted arithmetic mean</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="References">References</h2></div>
<style data-mw-deduplicate="TemplateStyles:r1239543626">
/* start https://en.wikipedia.org/ */


.mw-parser-output .reflist{margin-bottom:0.5em;list-style-type:decimal}@media screen{.mw-parser-output .reflist{font-size:90%}}.mw-parser-output .reflist .references{font-size:100%;margin-bottom:0;list-style-type:inherit}.mw-parser-output .reflist-columns-2{column-width:30em}.mw-parser-output .reflist-columns-3{column-width:25em}.mw-parser-output .reflist-columns{margin-top:0.3em}.mw-parser-output .reflist-columns ol{margin-top:0}.mw-parser-output .reflist-columns li{page-break-inside:avoid;break-inside:avoid-column}.mw-parser-output .reflist-upper-alpha{list-style-type:upper-alpha}.mw-parser-output .reflist-upper-roman{list-style-type:upper-roman}.mw-parser-output .reflist-lower-alpha{list-style-type:lower-alpha}.mw-parser-output .reflist-lower-greek{list-style-type:lower-greek}.mw-parser-output .reflist-lower-roman{list-style-type:lower-roman}


/* end https://en.wikipedia.org/ */
</style><div class="reflist">
<div class="mw-references-wrap mw-references-columns"><ol class="references">
<li id="cite_note-Stalling_1995-1"><span class="mw-cite-backlink">^ <a href="#cite_ref-Stalling_1995_1-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-2"><sup><i><b>c</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-3"><sup><i><b>d</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-4"><sup><i><b>e</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-5"><sup><i><b>f</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-6"><sup><i><b>g</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-7"><sup><i><b>h</b></i></sup></a> <a href="#cite_ref-Stalling_1995_1-8"><sup><i><b>i</b></i></sup></a></span> <span class="reference-text"><style data-mw-deduplicate="TemplateStyles:r1238218222">
/* start https://en.wikipedia.org/ */


.mw-parser-output cite.citation{font-style:inherit;word-wrap:break-word}.mw-parser-output .citation q{quotes:"\"""\"""'""'"}.mw-parser-output .citation:target{background-color:rgba(0,127,255,0.133)}.mw-parser-output .id-lock-free.id-lock-free a{background:url("./mw/Lock-green.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-limited.id-lock-limited a,.mw-parser-output .id-lock-registration.id-lock-registration a{background:url("./mw/Lock-gray-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .id-lock-subscription.id-lock-subscription a{background:url("./mw/Lock-red-alt-2.svg")right 0.1em center/9px no-repeat}.mw-parser-output .cs1-ws-icon a{background:url("./mw/Wikisource-logo.svg")right 0.1em center/12px no-repeat}body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-free a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-limited a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-registration a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .id-lock-subscription a,body:not(.skin-timeless):not(.skin-minerva) .mw-parser-output .cs1-ws-icon a{background-size:contain;padding:0 1em 0 0}.mw-parser-output .cs1-code{color:inherit;background:inherit;border:none;padding:inherit}.mw-parser-output .cs1-hidden-error{display:none;color:var(--color-error,#d33)}.mw-parser-output .cs1-visible-error{color:var(--color-error,#d33)}.mw-parser-output .cs1-maint{display:none;color:#085;margin-left:0.3em}.mw-parser-output .cs1-kern-left{padding-left:0.2em}.mw-parser-output .cs1-kern-right{padding-right:0.2em}.mw-parser-output .citation .mw-selflink{font-weight:inherit}@media screen{.mw-parser-output .cs1-format{font-size:95%}html.skin-theme-clientpref-night .mw-parser-output .cs1-maint{color:#18911f}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .cs1-maint{color:#18911f}}


/* end https://en.wikipedia.org/ */
</style><cite id="CITEREFStallingHege1995" class="citation conference cs1">Stalling, Detlev; Hege, Hans-Christian (August 6–11, 1995). <a rel="nofollow" class="external text" href="https://archive.org/details/computergraphics00sigg/page/249">"Fast and Resolution Independent Line Integral Convolution"</a>. <i>Proceedings of the 22nd Annual Conference on Computer Graphics and Interactive Techniques</i>. SIGGRAPH '95. Los Angeles, California. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/computergraphics00sigg/page/249">249–256</a>. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.45.5526">10.1.1.45.5526</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F218380.218448">10.1145/218380.218448</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-89791-701-4</bdi>.</cite></span>
</li>
<li id="cite_note-Cabral_1993-2"><span class="mw-cite-backlink">^ <a href="#cite_ref-Cabral_1993_2-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-Cabral_1993_2-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFCabralLeedom1993" class="citation conference cs1">Cabral, Brian; Leedom, Leith Casey (August 2–6, 1993). "Imaging Vector Fields Using Line Integral Convolution". <i>Proceedings of the 20th annual conference on Computer graphics and interactive techniques</i>. SIGGRAPH '93. Anaheim, California. pp.&nbsp;<span class="nowrap">263–</span>270. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.115.1636">10.1.1.115.1636</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1145%2F166117.166151">10.1145/166117.166151</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-89791-601-8</bdi>.</cite></span>
</li>
<li id="cite_note-:0-3"><span class="mw-cite-backlink">^ <a href="#cite_ref-:0_3-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:0_3-1"><sup><i><b>b</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFWard1996" class="citation web cs1">Ward, Matthew O. (February 5, 1996). <a rel="nofollow" class="external text" href="https://web.cs.wpi.edu/~matt/courses/cs563/talks/flowvis/lic.html">"Line Integral Convolution for Flow Visualization"</a>. Worcester Polytechnic Institute<span class="reference-accessdate">. Retrieved <span class="nowrap">2024-07-21</span></span>.</cite></span>
</li>
<li id="cite_note-Laidlaw_2001-4"><span class="mw-cite-backlink"><b><a href="#cite_ref-Laidlaw_2001_4-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFLaidlawKirbyDavidsonMiller2001" class="citation conference cs1">Laidlaw, David H.; Kirby, Robert M.; Davidson, J. Scott; Miller, Timothy S.; da Silva, Marco; Warren, William H.; Tarr, Michael J. (October 21–26, 2001). "Quantitative Comparative Evaluation of 2D Vector Field Visualization Methods". <i>IEEE Visualization 2001, VIS '01. Proceedings</i>. San Diego, CA, USA. pp.&nbsp;<span class="nowrap">143–</span>150.</cite></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><b><a href="#cite_ref-5">^</a></b></span> <span class="reference-text"><cite id="CITEREFLiu2007" class="citation web cs1">Liu, Zhanping (Aug 21, 2007). <a rel="nofollow" class="external text" href="http://www.zhanpingliu.org/research/flowvis/LIC/LIC.htm">"LIC (Line Integral Convolution)"</a><span class="reference-accessdate">. Retrieved <span class="nowrap">2024-07-21</span></span>.</cite></span>
</li>
<li id="cite_note-Weiskopf_2009-6"><span class="mw-cite-backlink"><b><a href="#cite_ref-Weiskopf_2009_6-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFWeiskopf2009" class="citation book cs1">Weiskopf, Daniel (2009). "Iterative Twofold Line Integral Convolution for Texture-Based Vector Field Visualization". In Möller, Torsten; Hamann, Bernd; Russell, Robert D. (eds.). <span class="id-lock-limited" title="Free access subject to limited trial, subscription normally required"><a rel="nofollow" class="external text" href="https://archive.org/details/mathematicalfoun00mlle"><i>Mathematical Foundations of Scientific Visualization, Computer Graphics, and Massive Data Exploration</i></a></span>. Mathematics and Visualization. Berlin, New York: <a href="Springer_Science%2BBusiness_Media" title="Springer Science+Business Media">Springer</a>. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/mathematicalfoun00mlle/page/n195">191</a>–211. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.66.3013">10.1.1.66.3013</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2Fb106657_10">10.1007/b106657_10</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-3-540-25076-0</bdi>.</cite></span>
</li>
<li id="cite_note-Hege_1998-7"><span class="mw-cite-backlink"><b><a href="#cite_ref-Hege_1998_7-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFHegeStalling1998" class="citation cs2">Hege, Hans-Christian; Stalling, Detlev (1998), "Fast LIC with Piecewise Polynomial Filter Kernels", in Hege, Hans-Christian; Polthier, Konrad (eds.), <i>Mathematical Visualization</i>, Berlin, Heidelberg: Springer-Verlag, pp.&nbsp;<span class="nowrap">295–</span>314, <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.31.504">10.1.1.31.504</a></span>, <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-3-662-03567-2_22">10.1007/978-3-662-03567-2_22</a>, <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>978-3-642-08373-0</bdi></cite></span>
</li>
<li id="cite_note-:1-8"><span class="mw-cite-backlink">^ <a href="#cite_ref-:1_8-0"><sup><i><b>a</b></i></sup></a> <a href="#cite_ref-:1_8-1"><sup><i><b>b</b></i></sup></a> <a href="#cite_ref-:1_8-2"><sup><i><b>c</b></i></sup></a></span> <span class="reference-text"><cite id="CITEREFWegenkittlGröller1997" class="citation book cs1">Wegenkittl, Rainer; Gröller, Eduard (24 October 1997). <a rel="nofollow" class="external text" href="https://www.cg.tuwien.ac.at/research/vis/dynsys/frolic/frolic_crc.pdf">"Fast oriented line integral convolution for vector field visualization via the Internet"</a> <span class="cs1-format">(PDF)</span>. <i>Proceedings. Visualization '97 (Cat. No. 97CB36155)</i>. pp.&nbsp;<span class="nowrap">309–</span>316. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2FVISUAL.1997.663897">10.1109/VISUAL.1997.663897</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>0-8186-8262-0</bdi>.</cite></span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><b><a href="#cite_ref-9">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.cg.tuwien.ac.at/research/vis/dynsys/frolic/">Java Exploration Tool for Dynamical Systems by R. Wegenkittl and E. Gröller.</a></span>
</li>
<li id="cite_note-Shen_1998-10"><span class="mw-cite-backlink"><b><a href="#cite_ref-Shen_1998_10-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFShenKam1998" class="citation journal cs1">Shen, Han-Wei; Kam, David L. (1998). <a rel="nofollow" class="external text" href="http://web.cse.ohio-state.edu/~shen.94/Research/Gravity/Project_2_files/Shen1998a.pdf">"A New Line Integral Convolution Algorithm for Visualizing Time-Varying Flow Fields"</a> <span class="cs1-format">(PDF)</span>. <i>IEEE Trans Vis Comput Graph</i>. <b>4</b> (2). Los Alamitos: IEEE: <span class="nowrap">98–</span>108. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1109%2F2945.694952">10.1109/2945.694952</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/1077-2626">1077-2626</a>.</cite></span>
</li>
<li id="cite_note-Ding_2015-11"><span class="mw-cite-backlink"><b><a href="#cite_ref-Ding_2015_11-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFDingLiuYuChen2015" class="citation conference cs1">Ding, Zi'ang; Liu, Zhanping; Yu, Yang; Chen, Wei (2015). "Parallel unsteady flow line integral convolution for high-performance dense visualization". <i>2015 IEEE Pacific Visualization Symposium, PacificVis 2015</i>. Hangzhou, China. pp.&nbsp;<span class="nowrap">25–</span>30.</cite></span>
</li>
<li id="cite_note-Zoeckler_1996-12"><span class="mw-cite-backlink"><b><a href="#cite_ref-Zoeckler_1996_12-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFZöcklerStallingHege1997" class="citation journal cs1">Zöckler, Malte; Stalling, Detlev; Hege, Hans-Christian (1997). <a rel="nofollow" class="external text" href="http://www.zib.de/visual-publications/sources/src-1996/parLIC.pdf">"Parallel Line Integral Convolution"</a> <span class="cs1-format">(PDF)</span>. <i>Parallel Computing</i>. <b>23</b> (7). Amsterdam: North Holland: <span class="nowrap">975–</span>989. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1016%2FS0167-8191%2897%2900039-2">10.1016/S0167-8191(97)00039-2</a>. <a href="ISSN_(identifier)" class="mw-redirect" title="ISSN (identifier)">ISSN</a>&nbsp;<a rel="nofollow" class="external text" href="https://search.worldcat.org/issn/0167-8191">0167-8191</a>.</cite></span>
</li>
<li id="cite_note-Battke_1997-13"><span class="mw-cite-backlink"><b><a href="#cite_ref-Battke_1997_13-0">^</a></b></span> <span class="reference-text"><cite id="CITEREFBattkeStallingHege1997" class="citation book cs1">Battke, Henrik; Stalling, Detlev; Hege, Hans-Christian (1997). "Fast Line Integral Convolution for Arbitrary Surfaces in 3D". In Hege, Hans-Christian; Polthier, Konrad (eds.). <span class="id-lock-limited" title="Free access subject to limited trial, subscription normally required"><a rel="nofollow" class="external text" href="https://archive.org/details/visualizationmat00fran"><i>Visualization and Mathematics: Experiments, Simulations, and Environments</i></a></span>. Berlin, New York: <a href="Springer_Science%2BBusiness_Media" title="Springer Science+Business Media">Springer</a>. pp.&nbsp;<a rel="nofollow" class="external text" href="https://archive.org/details/visualizationmat00fran/page/n191">181</a>–195. <a href="CiteSeerX_(identifier)" class="mw-redirect" title="CiteSeerX (identifier)">CiteSeerX</a>&nbsp;<span class="id-lock-free" title="Freely accessible"><a rel="nofollow" class="external text" href="https://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.71.7228">10.1.1.71.7228</a></span>. <a href="Doi_(identifier)" class="mw-redirect" title="Doi (identifier)">doi</a>:<a rel="nofollow" class="external text" href="https://doi.org/10.1007%2F978-3-642-59195-2_12">10.1007/978-3-642-59195-2_12</a>. <a href="ISBN_(identifier)" class="mw-redirect" title="ISBN (identifier)">ISBN</a>&nbsp;<bdi>3-540-61269-6</bdi>.</cite></span>
</li>
<li id="cite_note-14"><span class="mw-cite-backlink"><b><a href="#cite_ref-14">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://daac.hpc.mil/gettingStarted/Line%20Integral%20Convolution.html">DAAC: Line Integral Convolution</a></span>
</li>
<li id="cite_note-15"><span class="mw-cite-backlink"><b><a href="#cite_ref-15">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://iopscience.iop.org/article/10.1088/0143-0807/36/3/035007">Visual exploration of 2D autonomous dynamical systems Thomas Müller2,1 and Filip Sadlo1 Published 26 February 2015 • © 2015 IOP Publishing Ltd European Journal of Physics, Volume 36, Number 3</a></span>
</li>
<li id="cite_note-16"><span class="mw-cite-backlink"><b><a href="#cite_ref-16">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="http://hint.fm/wind/">A real-time map of the wind in the U.S. by Fernanda Viégas and Martin Wattenberg.</a></span>
</li>
<li id="cite_note-17"><span class="mw-cite-backlink"><b><a href="#cite_ref-17">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.researchgate.net/publication/228663813_Efficient_Region-Based_Pencil_Drawing">researchgate publication: Sun, Shuo &amp; Huang, Dongwei. (2022). Efficient Region-Based Pencil Drawing.</a> </span>
</li>
<li id="cite_note-18"><span class="mw-cite-backlink"><b><a href="#cite_ref-18">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/1323994?arnumber=1323994">S. Yamamoto, Xiaoyang Mo and A. Imamiya, "Enhanced LIC pencil filter," Proceedings. International Conference on Computer Graphics, Imaging and Visualization, 2004. CGIV 2004., 2004, pp. 251-256, doi: 10.1109/CGIV.2004.1323994.</a></span>
</li>
<li id="cite_note-19"><span class="mw-cite-backlink"><b><a href="#cite_ref-19">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://ieeexplore.ieee.org/document/859772?arnumber=859772">Xiaoyang Mao, M. Kikukawa, K. Kashio and A. Imamiya, "Automatic generation of hair texture with line integral convolution," 2000 IEEE Conference on Information Visualization. An International Conference on Computer Visualization and Graphics, 2000, pp. 303-308, doi: 10.1109/IV.2000.859772.</a></span>
</li>
<li id="cite_note-20"><span class="mw-cite-backlink"><b><a href="#cite_ref-20">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://dl.acm.org/doi/10.1145/604471.604489">Xiaoyang Mao, Toshikazu Suzuki, and Atsumi Imamiya. 2003. AtelierM: a physically based interactive system for creating traditional marbling textures. In Proceedings of the 1st international conference on Computer graphics and interactive techniques in Australasia and South East Asia (GRAPHITE '03). Association for Computing Machinery, New York, NY, USA, 79–ff. https://doi.org/10.1145/604471.604489</a></span>
</li>
<li id="cite_note-21"><span class="mw-cite-backlink"><b><a href="#cite_ref-21">^</a></b></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://www.tandfonline.com/doi/full/10.1080/15230406.2020.1833762">Bernhard Jenny (2021) Terrain generalization with line integral convolution, Cartography and Geographic Information Science, 48:1, 78-92, DOI: 10.1080/15230406.2020.1833762</a></span>
</li>
</ol></div></div>
<style data-mw-deduplicate="TemplateStyles:r1290876196">
/* start https://en.wikipedia.org/ */


.mw-parser-output .side-box{margin:4px 0;box-sizing:border-box;border:1px solid #aaa;font-size:88%;line-height:1.25em;background-color:var(--background-color-interactive-subtle,#f8f9fa);display:flow-root}.mw-parser-output .infobox .side-box{font-size:100%}.mw-parser-output .side-box-abovebelow,.mw-parser-output .side-box-text{padding:0.25em 0.9em}.mw-parser-output .side-box-image{padding:2px 0 2px 0.9em;text-align:center}.mw-parser-output .side-box-imageright{padding:2px 0.9em 2px 0;text-align:center}@media(min-width:500px){.mw-parser-output .side-box-flex{display:flex;align-items:center}.mw-parser-output .side-box-text{flex:1;min-width:0}}@media(min-width:720px){.mw-parser-output .side-box{width:238px}.mw-parser-output .side-box-right{clear:right;float:right;margin-left:1em}.mw-parser-output .side-box-left{margin-right:1em}}


/* end https://en.wikipedia.org/ */
</style><style data-mw-deduplicate="TemplateStyles:r1237033735">
/* start https://en.wikipedia.org/ */


@media print{body.ns-0 .mw-parser-output .sistersitebox{display:none!important}}@media screen{html.skin-theme-clientpref-night .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}@media screen and (prefers-color-scheme:dark){html.skin-theme-clientpref-os .mw-parser-output .sistersitebox img[src*="Wiktionary-logo-en-v2.svg"]{background-color:white}}


/* end https://en.wikipedia.org/ */
</style><div class="side-box side-box-right sistersitebox"><style data-mw-deduplicate="TemplateStyles:r1126788409">
/* start https://en.wikipedia.org/ */


.mw-parser-output .plainlist ol,.mw-parser-output .plainlist ul{line-height:inherit;list-style:none;margin:0;padding:0}.mw-parser-output .plainlist ol li,.mw-parser-output .plainlist ul li{margin-bottom:0}


/* end https://en.wikipedia.org/ */
</style>
<div class="side-box-flex">
<div class="side-box-image"><span class="noviewer" typeof="mw:File"></span></div>
<div class="side-box-text plainlist">Wikimedia Commons has media related to <span style="font-weight: bold; font-style: italic;"><a href="https://commons.wikimedia.org/wiki/Category:Line_integral_convolution" class="extiw external" title="commons:Category:Line integral convolution">Line integral convolution</a></span>.</div></div>
</div>
<div class="side-box side-box-right sistersitebox">
<div class="side-box-flex">
<div class="side-box-image"><span class="noviewer" typeof="mw:File"></span></div>
<div class="side-box-text plainlist">Wikibooks has a book on the topic of: <i><b><a href="https://en.wikibooks.org/wiki/Fractals/Mathematics/LIC" class="extiw external" title="wikibooks:Fractals/Mathematics/LIC">Fractals/Mathematics/LIC</a></b></i></div></div>
</div></div><!--htdig_noindex--><div><div class="zim-footer">
This article is issued from <a class="external text" title="Last edited on 2025-07-26" href="https://en.wikipedia.org/wiki/?title=Line_integral_convolution&amp;oldid=1302620119">Wikipedia</a>. The text is available under <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.en">Creative Commons Attribution-Share Alike 4.0</a> unless otherwise noted. Additional terms may apply for the media files.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>

</body></html>